home *** CD-ROM | disk | FTP | other *** search
- /*
- Test per Int_points_p
-
- */
- #include "simple.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
-
-
- int main(int argc, char *argv[])
- {
- int i, n;
- double d, x[1000], fx[1000], p[1000];
-
- if (argc==1) {
- printf("Quanti punti? ");
- scanf("%d",&n);
- } else n=atoi(argv[1]);
- if (n>1000) n=1000;
- if (n<2) n=2;
-
- printf("Test di Int_points_p per la funzione x tra 2 e 5 (finto)\n");
- for (i=0; i<n; i++) {
- x[i] = 2 + i*(5-2)/(double)(n-1);
- fx[i] = x[i]; /* x*x*x*(x-1); */
- }
- d = Int_points_p(n, x, fx, p);
- printf("Esatto : 10.5\n");
- printf("%-2d punti : %.16g\n",n,d);
- for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
- for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);
-
-
-
- printf("Test di Int_points_p per la funzione x^4-x^3 tra 2 e 5\n");
- x[0]=2; fx[0] = 2*2*2*(2-1);
- for (i=1; i<n-1; i++) {
- d = ((rand()%100)/100.)*(5.-2.)*2/n;
- if (d<0.001) d=0.001;
- x[i] = x[i-1]+d;
- if (x[i]>5) x[i] = x[i-1]+0.01;
- fx[i] = x[i]*x[i]*x[i]*(x[i]-1);
- }
- x[n-1] = 5;
- fx[n-1] = 5*5*5*(5-1);
-
- d = Int_points_p(n, x, fx, p);
- printf("Esatto : 466.35\n");
- printf("%-2d punti : %.16g\n",n,d);
- for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
- for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);
-
- printf("Test di Int_points_p per la funzione x*sin(x)^2 tra 2 e 5 (finto)\n");
- for (i=0; i<n; i++) {
- x[i] = 2 + i*(5-2)/(double)(n-1);
- fx[i] = x[i]*sin(x[i])*sin(x[i]);
- }
- d = Int_points_p(n, x, fx, p);
- printf("Esatto : 5.5748036294843\n");
- printf("%-2d punti : %.16g\n",n,d);
- for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
- for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);
-
- }
-